export const RULES = `## Rules

TDD 遵循严格的红-绿-重构循环：

### Red Phase - 编写失败测试
- 编写一个描述期望行为的测试
- 测试必须因正确原因失败（不是语法/导入错误）
- 不需要先前的测试输出 - 编写第一个测试即开始循环
- 启动新循环始终有效，即使没有测试输出，所有测试通过，或测试输出显示无关工作
- **Rule**: 一次只添加一个新测试，无论操作类型（编辑、多编辑或写入）

### Green Phase - 使测试通过
- 编写最少的代码以通过当前失败的测试
- 精确匹配实现与失败类型：

| 测试失败消息 | 所需实现 |
|---------------------|------------------------|
| "not defined" / "undefined" / "not found" | 仅创建空存根/类/模块 |
| "not a constructor" / "cannot instantiate" | 仅创建空类 |
| "not a function" / "not callable" / "not a method" | 仅添加方法/函数存根 |
| 断言错误（例如，"expected X to be Y"） | 仅为断言实现最少逻辑 |

- **Rule**: 不进行预期编码、额外功能或未经测试的错误处理

### Refactor Phase - 改进现有代码
- 仅当相关测试通过时才进入此阶段
- 任何重构前都需要绿色测试的证据
- 适用于测试和实现代码
- 允许：类型添加、提取辅助函数、重组代码、替换魔术值
- 测试中允许：将设置移到 beforeEach、提取测试辅助函数
- **Rule**: 重构期间不添加新功能

## Validation Rules

### Absolute Violations
这些始终导致阻止：

1. **添加多个测试**: 添加多个新测试（始终允许添加单个测试）
2. **过度实现**: 超出当前测试要求的代码
3. **过早实现**: 在没有失败测试的情况下编写代码
4. **红色测试时重构**: 尝试重构时测试失败或缺失

### File-Specific Rules

#### 新文件创建
- **测试文件**: 必须最初只包含一个测试
- **实现文件**: 必须有失败测试证据证明创建的合理性

#### 现有文件修改
- **测试文件**: 可以添加一个新测试、修改现有测试或重构（如果是绿色）
- **实现文件**: 更改必须匹配当前测试失败类型

### Permitted Exceptions
- 配置文件（通常允许）
- 带有实用程序的初始测试文件设置
- 测试辅助和实用程序文件
- 修复导入/基础设施问题的存根
- 当测试输出显示由于缺少导入或构造函数而无测试时的简单存根
- **Important**: 没有相关失败测试的证据绝不引入新逻辑

## How to Analyze Changes

### 计算新测试
只有在旧内容中不存在的测试才是"新"测试。逐字符比较并根据语言查找测试声明（\`test(\`, \`it(\`, \`describe(\`, \`#[test]\`, \`def test_\` 等）。

**Example**: 文件有 3 个现有测试，编辑添加 2 个更多
- 旧内容：\`test("A")...\`, \`test("B")...\`, \`test("C")...\`
- 新内容：\`test("A")...\`, \`test("B")...\`, \`test("C")...\`, \`test("D")...\`, \`test("E")...\`
- **Count**: 添加了 2 个新测试（D 和 E），不是总共 5 个测试

不被视为新测试：
- 移动、重命名或重新格式化现有测试
- 转换为参数化测试或拆分为多个测试

### 识别相关测试
测试是"相关"的当它们：
- 执行被修改的代码
- 如果被修改的代码损坏会失败
- 导入或依赖于更改的模块

### 使用上下文线索
- **测试输出**: 显示当前阶段和所需实现
- **文件路径**: 识别测试与实现文件

## Decision Framework

### 何时阻止
检测到明确的 TDD 违规时阻止。提供：
1. 具体违规类型
2. 为何违反 TDD
3. 正确的下一步

提供有帮助的方向，以便代理在被阻止时不会卡住。如果测试由于缺少导入而显示无输出，请询问他们是否忘记创建存根。

示例："添加多个测试违规 - 同时添加 2 个测试。先添加一个测试。"

### 何时批准
批准当：
- 更改遵循 TDD 原则
- 信息不足以确定违规
`